The non-FT version
sequenceDiagram
participant C as Control
participant O as Observable
participant D as Detectors
participant M as Measurements
participant SurfaceCode@{ "type" : "collections" }
participant QRM@{ "type" : "collections" }
Note over C, QRM: Initialization Phase
C->>QRM: Set QRM code parameters
C->>SurfaceCode: Set surface code parameters
C->>D: 🔘 Postselection On
activate D
par
C->>QRM: Prepare Y state
QRM->>M: 18 measurements for Z checks
Note over QRM: ❌ non FT errors on 1, 2, 3
QRM->>M: 18 measurements for flags
M->>D: 8 detectors for meta-checks
M->>D: 10 detectors for flags
and
C->>SurfaceCode: Prepare X state
C->>SurfaceCode: Syndrome measurements
loop T_sc_pre
SurfaceCode->>M: 8 measurements for syndrome
alt The first round
M->>D: 4 Z detectors for syndrome
else
M->>D: 8 detectors for syndrome
end
end
end
Note over C, QRM: Lattice Surgery Phase
create participant S as Surgery Unit
C->>S: Merge
loop T_lat_surg
S->>QRM: Stabilizer measurements
Note over QRM, S: ❌ correlated errors in the first round is non-FT
S->>SurfaceCode: Stabilizer measurements
S->>M: 2 measurements for joint Z stabilizers
opt Not the first round
M->>D: 2 detectors for joint Z stabilizers
end
end
M->>O: Logical ZZ
C->>S: Decouple
par
SurfaceCode->>M: 8 measurements for syndrome
M->>D: 7 detectors for syndrome except the (-1,1) corner
Note right of D: ⚠️ rec_shift = 2 * T_lat_surg
M->>S: Joint X stabilizer synthesis
and
destroy QRM
QRM->>M: 15 destructive measurements on X basis
M->>D: 3 detectors for X checks
M->>S: Joint X stabilizer synthesis
M->>O: Logical X
end
destroy S
S->>D: 1 detector for joint X stabilizer
Note over C, SurfaceCode: Growing Phase
C->>SurfaceCode: Syndrome measurements
loop T_before_grow
SurfaceCode->>M: 8 measurements for syndrome
M->>D: 8 detectors for syndrome
Note right of D: ⚠️ rec_shift = 15 for first round
end
C->>SurfaceCode: Grow to full distance
SurfaceCode->>M: d^2-1 measurements for syndrome
M->>D: Several detectors for syndrome
C->>SurfaceCode: Syndrome measurements
loop T_ps_grow
SurfaceCode->>M: d^2-1 measurements for syndrome
M->>D: d^2-1 detectors for syndrome
end
C->>D: 🔘 Postselection Off
deactivate D
Note over C, SurfaceCode: Maintaining Phase
C->>SurfaceCode: Syndrome measurements
loop T_maintain
SurfaceCode->>M: d^2-1 measurements for syndrome
M->>D: d^2-1 detectors for syndrome
end
Note over C, SurfaceCode: Final Virtual Measurement
C->>SurfaceCode: Virtual Y measurement (noiseless)
SurfaceCode->>M: 1 MPP measurement
M->>O: Logical Y
C->>SurfaceCode: Virtual stabilizer measurement (noiseless)
SurfaceCode->>M: d^2-1 measurements for syndrome
M->>D: d^2-1 detectors for syndrome
Face-check version
sequenceDiagram
participant C as Control
participant O as Observable
participant D as Detectors
participant M as Measurements
participant SurfaceCode@{ "type" : "collections" }
participant QRM@{ "type" : "collections" }
Note over C, QRM: Initialization Phase
C->>QRM: Set QRM code parameters
C->>SurfaceCode: Set surface code parameters
C->>D: 🔘 Postselection On
activate D
par
C->>QRM: Prepare Y state
QRM->>M: 18 measurements for Z checks
Note over QRM: ❌ non FT errors on 1, 2, 3
QRM->>M: 18 measurements for flags
M->>D: 8 detectors for meta-checks
M->>D: 10 detectors for flags
and
C->>SurfaceCode: Prepare X state
C->>SurfaceCode: Syndrome measurements
loop T_sc_pre
SurfaceCode->>M: 8 measurements for syndrome
alt The first round
M->>D: 4 Z detectors for syndrome
else
M->>D: 8 detectors for syndrome
end
end
end
Note over C, QRM: Lattice Surgery Phase
create participant S as Surgery Unit
C->>S: Merge
loop T_lat_surg
S->>QRM: Stabilizer measurements
Note over QRM, S: ❌ correlated errors in the first round is non-FT
S->>SurfaceCode: Stabilizer measurements
QRM-->>QRM: Face check
S->>M: 2 measurements for joint Z stabilizers
QRM-->>M: 3 measurements for face Z checks
QRM-->>M: 3 measurements for flags
M-->>D: 3 detectors for Z checks
note right of D: ⚠️ rec_shit = ? for the first round
M-->>D: 3 detectors for flags
opt Not the first round
M->>D: 2 detectors for joint Z stabilizers
end
end
M->>O: Logical ZZ
C->>S: Decouple
par
SurfaceCode->>M: 8 measurements for syndrome
M->>D: 7 detectors for syndrome except the (-1,1) corner
Note right of D: ⚠️ rec_shift = 8 * T_lat_surg
M->>S: Joint X stabilizer synthesis
and
destroy QRM
QRM->>M: 15 destructive measurements on X basis
M->>D: 3 detectors for X checks
M->>S: Joint X stabilizer synthesis
M->>O: Logical X
end
destroy S
S->>D: 1 detector for joint X stabilizer
Note over C, SurfaceCode: Growing Phase
C->>SurfaceCode: Syndrome measurements
loop T_before_grow
SurfaceCode->>M: 8 measurements for syndrome
M->>D: 8 detectors for syndrome
Note right of D: ⚠️ rec_shift = 15 for first round
end
C->>SurfaceCode: Grow to full distance
SurfaceCode->>M: d^2-1 measurements for syndrome
M->>D: Several detectors for syndrome
C->>SurfaceCode: Syndrome measurements
loop T_ps_grow
SurfaceCode->>M: d^2-1 measurements for syndrome
M->>D: d^2-1 detectors for syndrome
end
C->>D: 🔘 Postselection Off
deactivate D
Note over C, SurfaceCode: Maintaining Phase
C->>SurfaceCode: Syndrome measurements
loop T_maintain
SurfaceCode->>M: d^2-1 measurements for syndrome
M->>D: d^2-1 detectors for syndrome
end
Note over C, SurfaceCode: Final Virtual Measurement
C->>SurfaceCode: Virtual Y measurement (noiseless)
SurfaceCode->>M: 1 MPP measurement
M->>O: Logical Y
C->>SurfaceCode: Virtual stabilizer measurement (noiseless)
SurfaceCode->>M: d^2-1 measurements for syndrome
M->>D: d^2-1 detectors for syndrome